<?php

/**
 * application.class.php LUOCMS应用程序创建类
 * @Author: Administrator
 * @Date:   2018-11-28 14:43:19
 * @Last Modified by:   Administrator
 * @Last Modified time: 2018-11-28 14:52:58
 */
class application
{
	/**
	 * [构造方法]
	 */
	public function __construct(){
		$param = base::load_sys_class('param');
		define('ROUTE_M', $param->route_m());
		define('ROUTE_C', $param->route_c());
		define('ROUTE_A', $param->route_a());
		$this->init();
	}

	/**
	 * [初始化操作]
	 * @return [type] [description]
	 */
	private function init(){
		$controller = $this->load_controller();
		if (method_exists($controller, ROUTE_A)) {
			if (preg_match('/^[_]/i', ROUTE_A)) {
				exit('You are visiting the action is to protect the private action');
			} else {
				call_user_func(array($controller, ROUTE_A));
			}
		} else {
			exit('Action does not exist.');
		}
	}

	/**
	 * [加载控制器]
	 * @param  string $filename [description]
	 * @param  string $m        [description]
	 * @return [type]           [description]
	 */
	private function load_controller($filename = '', $m = ''){
		if (empty($filename)) $filename = ROUTE_C;
		if (empty($m)) $m = ROUTE_M;
		$filepath = LC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.php';
		if (file_exists($filepath)) {
			$classname = $filename;
			include $filepath;
			if ($mypath = base::my_path($filepath)) {
				$classname = 'MY_'.$filename;
				include $mypath;
			}
			return new $classname;
		} else {
			exit('Controller does not exist.');
		}
	}
}